001 /*
002 * Copyright 2004-2005 Stephen J. McConnell.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
013 * implied.
014 *
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019 package net.dpml.transit.tools;
020
021 import java.util.ArrayList;
022 import java.util.List;
023
024 import org.apache.tools.ant.BuildException;
025 import org.apache.tools.ant.ComponentHelper;
026 import org.apache.tools.ant.Project;
027
028 /**
029 * Task that initializes the Transit sub-system during which a transit
030 * is assigned to the current project. In addition the initization procedures
031 * establishes a set of ant properties enabling convenient script based access
032 * to DPML dirctories.
033 *
034 * <pre>
035 <project name="example"
036 xmlns:transit="antlib:net.dpml.transit">
037 <transit:init/>
038 <echo message="Home: ${dpml.home}"/>
039 <echo message="Cache: ${dpml.cache}"/>
040 <echo message="Templates: ${dpml.templates}"/>
041 <echo message="Docs: ${dpml.docs}"/>
042 <echo message="Docs: ${dpml.dist}"/>
043 </project></pre>
044 * <p>Output from the above example is shown below:</p>
045 * <pre>
046 [echo] Home: C:\system\dpml
047 [echo] Cache: C:\system\dpml\main
048 [echo] Templates: C:\system\dpml\templates
049 [echo] Docs: C:\system\dpml\docs
050 [echo] Docs: C:\system\dpml\dist
051 * </pre>
052 *
053 * @author <a href="http://www.dpml.net">The Digital Product Meta Library</a>
054 * @version 1.0.0
055 */
056 public class MainTask extends TransitTask
057 {
058 // ------------------------------------------------------------------------
059 // state
060 // ------------------------------------------------------------------------
061
062 /**
063 * List of plugin declarations.
064 */
065 private List m_mappings = new ArrayList();
066
067 // ------------------------------------------------------------------------
068 // constructor
069 // ------------------------------------------------------------------------
070
071 /**
072 * Creation of a new Main task.
073 */
074 public MainTask()
075 {
076 super();
077 }
078
079 // ------------------------------------------------------------------------
080 // Task
081 // ------------------------------------------------------------------------
082
083 /**
084 * Create and return a new plugin definition.
085 * @return the plugin definition
086 */
087 public MapDataType createMap()
088 {
089 MapDataType map = new MapDataType();
090 m_mappings.add( map );
091 return map;
092 }
093
094 /**
095 * Set the project.
096 * @param project the current project
097 */
098 public void setProject( Project project )
099 {
100 setTaskName( "transit" );
101 super.setProject( project );
102 }
103
104 /**
105 * Updates properties on the current project and install any plugins declared
106 * as children of the transit init tag.
107 *
108 * @exception BuildException if an execution error occurs
109 */
110 public void execute() throws BuildException
111 {
112 Project project = getProject();
113 TransitComponentHelper.initialize( project );
114 ComponentHelper ch = ComponentHelper.getComponentHelper( project );
115 MapDataType[] maps = (MapDataType[]) m_mappings.toArray( new MapDataType[0] );
116 TransitComponentHelper.register( maps );
117 }
118 }
119